home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 6 / FM Towns Free Software Collection 6.iso / data / fapx / fapxmain.plt < prev    next >
Text File  |  1993-07-08  |  13KB  |  423 lines

  1. /************************************************************************
  2. *                                    *
  3. * nifty Full Auto Pilot eXtended V4    *
  4. *                                                                       *
  5. *    All Right Reserved, Copyright(c) Yama-chan    1991-1993    *
  6. *                (Hiroaki Yamada       NIFTY-ID PEE01244)    *
  7. *    All Right Reserved, Copyright(c) 北狐        1991        *
  8. *                (Yuse Okabe       NIFTY-ID NAH01244)    *
  9. *    All Right Reserved, Copyright(c) モップ        1991        *
  10. *                (Masahiro Kezuka   NIFTY-ID PFF00570)    *
  11. *    All Right Reserved, Copyright(c) るぱん        1991        *
  12. *                (Kunio Yamaguchi   NIFTY-ID MHB01736)    *
  13. *    All Right Reserved, Copyright(c) -なる-☆    1992-1993    *
  14. *                (Tetsuo Hayakawa   NIFTY-ID PGA01332)    *
  15. *    All Right Reserved, Copyright(c) フェイス    1992-1993    *
  16. *                (Izumi Yoshinaga   NIFTY-ID NCD03175)    *
  17. *    All Right Reserved, Copyright(c) えんでん    1992-1993    *
  18. *                (Kazuhiko Enda     NIFTY-ID GFF00430)    *
  19. *    All Right Reserved, Copyright(c) コノミ        1992-1993    *
  20. *                (Yoshimi Takahashi NIFTY-ID QFH02666)    *
  21. *                                    *
  22. *************************************************************************
  23.  
  24. /************************************************************************
  25. *                                    *
  26. *    更新履歴                            *
  27. *                                    *
  28. *    v2.02    1991.01.05    original made        by 北狐        *
  29. *    v2.改    1991.02.02    MREADコマンド対応他    by Yama-chan    *
  30. *    v3.00    1991.02.23    MOPTERM v0.98対応他            *
  31. *    v4.00    1991.08.15    対話型セットアップ機能を始めとする大幅変更他    *
  32. *    v4.01    1991.08.31    ログ参照機能追加他            *
  33. *    v4.02    1991.10.17    ファイル操作機能追加他            *
  34. *    v4.03    1991.11.25    ログ参照機能にコメント作成機能追加他        *
  35. *    v4.04    1992.01.15    ファイル操作機能にNAPLPSファイル表示機能追加他    *
  36. *    v4.05    1992.04.12    MOPTERM v2.02対応他            *
  37. *    v4.06    1992.05.10    ログイン前の一時的設定変更処理追加他    *
  38. *    v4.07    1992.09.04    FMサークルディスクサービス用カストマイズ版        *
  39. *    v4.08    1992.09.22    アップロード/ダウンロード制御ファイル更新機能追加他    *
  40. *    v4.09    1992.11.08    オープニング画面表示機能追加他        *
  41. *    v4.10a    1992.12.18    パティオ対応                *
  42. *                自由行動中の他オートパイロット呼出し機能追加    *
  43. *                            by えんでん    *
  44. *    v4.10b    1993.01.03    NAPLPS天気予報対応    by -なる-☆    *
  45. *    v4.10c  1993.01.30    NIFTY巡回時間帯指定追加 by フェイス    *
  46. *                天気予報都市指定機能追加        *
  47. *                FAPXSET.PLPファイル分割(FAPXSETM,FAPXSETW)    *
  48. *                FAPXUPLD.PLPファイル分割(FAPXUPL2)        *
  49. *                デバッグモードフラグ追加            *
  50. *    v4.10d  1993.01.30    バグ修正(v4.10cでのレベルダウン)        *
  51. *    v4.10e  1993.02.04    UST2(forum),GUEST(hp)コマンド指定追加    *
  52. *                FAPXUSET.PLPファイル分割(FAPXUUPD,FAPXUADD)    *
  53. *    v4.10f  1993.02.07    バグ修正(v4.10eでのレベルダウン)        *
  54. *                UST2(forum),GUEST(hp)コマンド指定変更    *
  55. *    v4.10g  1993.02.10    バグ修正                *
  56. *    v4.10h  1993.02.14    エラー対処強化(ドライブアクセス不能)        *
  57. *                強制実行機能追加    by フェイス    *
  58. *                フォーラム入会/未読調整機能追加        *
  59. *                            by -なる-☆    *
  60. *    v4.10i  1993.02.19    バグ修正(今週のお知らせ)        *
  61. *    v4.10j  1993.02.24    フォーラム入会時お知らせを読む機能追加    *
  62. *                            by -なる-☆    *
  63. *                通信メニュー順序変更            *
  64. *                バグ修正(プロフィールアップ処理,メールタイトルリスト処理)*
  65. *    v4.10k  1993.02.27    バグ修正                *
  66. *    v4.10l  1993.02.28    バグ修正                *
  67. *    v4.10m  1993.03.02    バグ修正                *
  68. *    v4.10n  1993.03.07    バグ修正(パティオへの自動アップロード処理)    *
  69. *    v4.10o  1993.03.12    バグ修正(NAPLPS天気予報確認処理)    *
  70. *                通信開始指定時刻初期値設定処理追加    *
  71. *                バグ修正(再ログイン処理)            *
  72. *                バグ修正(パティオへの自動アップロード処理)    *
  73. *    v4.10p  1993.03.13    バグ修正(受信メール参照機能)        *
  74. *                バグ修正(v4.10oでのレベルダウン)        *
  75. *                バグ修正(パティオへの自動アップロード処理)    *
  76. *    v4.10q  1993.03.21    FAPXRTC.PLP機能強化     by フェイス     *
  77. *                バグ修正(v4.10pでのレベルダウン)        *
  78. *                天気予報確認処理のエラー対策強化        *
  79. *                            by コノミ    *
  80. *                バグ修正(NAPLPSメール参照機能)        *
  81. *    v4.10r  1993.03.23    バグ修正(NAPLPSメール送信機能)        *
  82. *                天気予報確認処理の待ち時間長時間化    *
  83. *    v4.10r+ 1993.04.09    バグ修正(圧縮ログファイル更新処理)        *
  84. *                                    *
  85. *************************************************************************/
  86.  
  87. /*    FAPXのV/L    */
  88. %VerLev    {4.10r};
  89. %VL    {410r};
  90.  
  91. /*    DUBUG MODE    */
  92. %DEBUG    {No};
  93.  
  94. /************************************************************************
  95. *    定数・変数領域の指定                        *
  96. *************************************************************************/
  97. /*    ID & PASSWORD    */
  98. var     ID    [8];
  99. var     PassWord[8];
  100.  
  101. /*    電話番号    */
  102. var     ROAD1    [80];
  103. var     ROAD2    [80];
  104. var     ROAD3    [80];
  105.  
  106. /*    モデムコマンド及びダイアルタイプ    */
  107. var     MODEM    [40];
  108. var     DIAL    [1];
  109.  
  110. /*    ディレクトリ    */
  111. var     TEMP    [64];
  112. var     LOG    [64];
  113. var     UP    [64];
  114. var     SOUND    [64];
  115. var     TEMP2    [64];
  116. var     LOG2    [64];
  117. var     SOUND2    [64];
  118. var     UP2    [64];
  119.  
  120. /*    ログファイル作成モード    */
  121. var     LOGmode    [8];
  122.  
  123. /*    NIFTYにおける処理    */
  124. var     NIFTY    [1536];
  125.  
  126. /*    画面背景色    */
  127. var     R    [3];
  128. var     G    [3];
  129. var     B    [3];
  130.  
  131. /*    オプションスイッチ    */
  132. var     BELFIL    [64];
  133. var     VBELL    [3];
  134. var     NATTOU    [3];
  135. var     CLICK    [3];
  136. var     TAB    [2];
  137. var     LOCK    [3];
  138. var     OAK    [5];
  139.  
  140. /*    保存ファイルの圧縮指定    */
  141. var     COMPRESS[3];
  142. var     ARCHIVER[64];
  143.  
  144. /*    設定ファイルのパス名    */
  145. var    SETFILE    [64];
  146. var    NIFFILE    [64];
  147. var    SETFILE1[64];
  148. var    SETFILE2[64];
  149.  
  150. /*    オンライン処理フラグ    */
  151. var    DONIFTY    [5];
  152. var    LIMIT    [4];
  153. var    UPDOWN    [5];
  154.  
  155. var    MAILDOWN[8];
  156. var    MAILDEL    [3];
  157. var    CHKSDL    [3];
  158.  
  159. var    READNEW    [3];
  160. var    CHKBILL    [6];
  161. var    FMNEWS    [3];
  162. var    WEATHER    [3];
  163. var    AREA    [1];
  164. var    CITY    [1];
  165.  
  166. var    START    [3];
  167. var    REDIAL    [4];
  168. var    AP3    [3];
  169.  
  170. /*    変数の定義    */
  171. var    AM3    [6];    /* 夜間自動実行フラグ    */
  172. var    ACCESS    [5];    /* 通信開始時刻    [HH:MM]    */
  173.  
  174. /*    ウェイト時間の設定    */
  175. %Wtime1    10;        /* モデム応答待ち時間        */
  176. %Wtime2    60;        /* NIFTYプロンプト待ち時間    */
  177. %Wtime4    60;        /* select入力待ち時間        */
  178.  
  179. /*    ベルコード    */
  180. var    BELL    [1];
  181.  
  182. /*    各種設定フラグ    */
  183. var    OPENING    [3];    /*    オープニング画面表示    */
  184. var    FAPXEND    [8];    /*    自動通信終了時処理    */
  185. var    UPDOWN    [5];    /*    アップ・ダウンロード処理実行タイミング    */
  186. var    FMGR    [64];    /*    ファイルマネージャパイロットファイル名    */
  187. var    UST2CMD    [5];    /*    UST2コマンド実行フラグ    */
  188. var    GUESTCMD[5];    /*    GUESTコマンド実行フラグ    */
  189.  
  190. /************************************************************************
  191. *    共通処理モジュール                        *
  192. ************************************************************************/
  193. /* 音声メッセージ出力処理 */
  194. %SNDMSG    {
  195.     [file]
  196.     case(SOUND2={}||SOUND2={\},
  197.         {No},{case(@filechk(SOUND2|file),
  198.             {Yes},{snd(SOUND2|file)},{No}, {display(BELL)})},
  199.         {Yes},{display(BELL)}
  200.         );
  201.     };
  202.  
  203. %PLTSTOP{
  204.     SNDMSG({owata_f.snd});
  205.     display({\nオートパイロットFAPX}|VerLev|{を停止しました\n});
  206.     stop;
  207.     };
  208.  
  209. %AUTOEND{
  210.     footnote({オートパイロットの終了処理をしています});
  211.     display({\nNIFTYとの通信を終了しました\n});
  212.     SNDMSG({owata_f.snd});wait(2);
  213.     };
  214.  
  215. /* パラメタで指定されたディレクトリへ移動する(「A:\」と「A:」の両方が可能) */
  216. %setcdir2{
  217.     [dir]
  218.     setcdir(@case(@nochar(dir),2,{im(dir|{\})},,{im(dir)}));
  219.     };
  220.  
  221. /* 指定されたディレクトリー配下に,第2パラメターで指定されたディレクトリを
  222.      (もし,無ければ)作成する。 */
  223. %mkdir    {
  224.     [dir,name]
  225.     dispoff(!DEBUG);
  226.     case(@setcdir2(dir),
  227.         {Yes},{command({mkdir }|name)},
  228.         {No},{select({装置(}|dir|{)が使えませんが?},
  229.             Wtime4,{},
  230.             {    もう一回やってみる    },{mkdir(dir,name)},
  231.             {     自動処理をやめる    },{stop},
  232.             {  無視して先の処理をやる },{})}
  233.         );
  234.     dispoff({No})
  235.     };
  236.  
  237. /* 指定されたディレクトリーを(もし,無ければ)作成する。 */
  238. %mkdir2    {
  239.     [dir]
  240.     case(@setcdir2(dir),
  241.         {No},{case(@nochar(dir)==2,
  242.             {Yes},
  243.             {display({装置(}|dir|{)が使えません\n});
  244.                 SNDMSG({okasi_f.snd})}, 
  245.             {No},
  246.             {mkdir2(@body(dir,,{\}));
  247.                 mkdir(@body(dir,,{\}),@tail(dir,{\}))});
  248.         });
  249.     };
  250.  
  251. /*    n番目の部分文字列をとりだす関数    */
  252. %nth    {
  253.     [str,n,sep]
  254.     var    a    [256];    
  255.     var    m    [3];
  256.     a:=str;
  257.     m:=0;
  258.     case    (n<1,
  259.         {Yes},{im({})},
  260.         {No},
  261.         {loop    ({
  262.             m:=m+1;
  263.             case(m==n||a={},{Yes},{im({No})},
  264.                 {No},{a:=@body(a,sep);im({Yes})});
  265.             });
  266.          im(@head(a,sep));
  267.         });
  268.     };
  269.  
  270. /*    現在の日付・時刻を得る 「yyyy-mm-dd (曜) hh:mm:ss」    */
  271. %getdt    {
  272.     %dt    @daylong;
  273.     %week    @case(@getchar(dt,12,3),
  274.             {Sun},{im({日})},{Mon},{im({月})},{Tue},{im({火})},
  275.             {Wed},{im({水})},{Thu},{im({木})},{Fri},{im({金})},
  276.             {Sat},{im({土})},,{im({  })});
  277.     im(@getchar(dt,1,4)|{-}|@getchar(dt,6,2)|{-}|@getchar(dt,9,2)|
  278.         { (}|week|{) }|@getchar(dt,16,8));
  279.     };
  280.  
  281. /*    指定されたファイルを yymmddnn.* にリネームして指定されたディレクトリにコピーする */
  282. %renfile{
  283.     [file,path]
  284.     var    n    [2];
  285.     var    file2    [12];
  286.     %d    @getdt;
  287.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  288.     n:=-1;
  289.     mkdir2(path);setcdir2(path);
  290.     loop    ({
  291.         n:=n+1;
  292.         case(@nochar(n)=1,{Yes},{n:={0}|n});
  293.         case(@body(file,{.})={},
  294.             {Yes},{file2:=date|n},
  295.             {No}, {file2:=date|n|{.}|@tail(file,{.})});
  296.         case(@filechk(file2)={No}||n==99,
  297.             {Yes},{im({No})},{No},{im({Yes})});
  298.         });
  299.     copyfile(file,file2);
  300.     im(file2);
  301.     };
  302.  
  303. /*    指定されたファイルを MddHmmss.* にリネームして指定されたディレクトリにコピーする */
  304. %nowfile2{
  305.     [file,path]
  306.     var    file2    [12];
  307.     %d    @getdt;
  308.     %mm    @case(@getchar(d,6,2),
  309.             {01},{im({1})},{02},{im({2})},{03},{im({3})},
  310.             {04},{im({4})},{05},{im({5})},{06},{im({6})},
  311.             {07},{im({7})},{08},{im({8})},{09},{im({9})},
  312.             {10},{im({a})},{11},{im({b})},{12},{im({c})});
  313.     %dd    @getchar(d,9,2);
  314.     %hh    @case(@getchar(d,17,2),
  315.             {01},{im({1})},{02},{im({2})},{03},{im({3})},
  316.             {04},{im({4})},{05},{im({5})},{06},{im({6})},
  317.             {07},{im({7})},{08},{im({8})},{09},{im({9})},
  318.             {10},{im({a})},{11},{im({b})},{12},{im({c})},
  319.             {13},{im({d})},{14},{im({e})},{15},{im({f})},
  320.             {16},{im({g})},{17},{im({h})},{18},{im({i})},
  321.             {19},{im({j})},{20},{im({k})},{21},{im({l})},
  322.             {22},{im({m})},{23},{im({n})},{00},{im({0})});
  323.     %mmss    @getchar(d,20,2)|@getchar(d,23,2);
  324.     case(@body(file,{.})={},
  325.         {Yes},{file2:=mm|dd|hh|mmss},
  326.         {No}, {file2:=mm|dd|hh|mmss|{.}|@body(file,{.})});
  327.     mkdir2(path);setcdir2(path);copyfile(file,file2);im(file2);
  328.     };
  329.  
  330. /*    指定されたディレクトリに yymmddnn.* というファイルを作成する */
  331. %crefile{
  332.     [path,sfx]
  333.     var    n    [2];
  334.     var    file1    [12];
  335.     %d    @getdt;
  336.     %date    @getchar(d,3,2)|@getchar(d,6,2)|@getchar(d,9,2);
  337.     mkdir2(path);setcdir2(path);
  338.     n:=-1;
  339.     loop    ({
  340.         n:=n+1;
  341.         case(@nochar(n)=1,{Yes},{n:={0}|n});
  342.         case(sfx={},
  343.             {Yes},{file1:=date|n},{No},{file1:=date|n|{.}|sfx});
  344.         case(@filechk(file1)={No}||n==99,
  345.             {Yes},{im({No})},{No},{im({Yes})});
  346.         });
  347.     im(file1);
  348.     };
  349.  
  350. /*    全てのメモをクローズする    */
  351. %CloseAllMemo{
  352.     case(@mlast!=0 && @mcheck==0,{Yes},{mopen(@mlast)});
  353.     case(@mcheck!=0,{Yes},{loop({mclose(2);im(@mcheck!=0)})});
  354.     };
  355.  
  356. /*    初期設定    */
  357. %init    {
  358.     case(OAK={},{Yes},{setoak({J})},{No},{setoak(OAK)});
  359.     case(NATTOU={Yes}||NATTOU={No},{Yes},{nattou(NATTOU)});
  360.     case(CLICK={Yes}||CLICK={No},{Yes},{click(CLICK)});
  361.     case(R<>{}&&G<>{}&&B<>{},{Yes},{backclr(R,G,B)});
  362.     case(VBELL={Yes}||VBELL={No},{Yes},{visibell(VBELL)});
  363.     case(@tail(BELFIL,{.}),
  364.         {snd},{bellfile(BELFIL)},{SND},{bellfile(BELFIL)});
  365.     case(TAB<>{},{Yes},{tab(TAB)});
  366.     case(TEMP={},{Yes},{TEMP:=CDIR});
  367.     case(@nochar(TEMP)==3,{No},{TEMP2:=TEMP|{\}},{Yes},{TEMP2:=TEMP});
  368.     case(TEMP<>{}&&@setcdir2(TEMP)={No},{Yes},{mkdir2(TEMP)});
  369.     case(LOG={},{Yes},{LOG:=CDIR});
  370.     case(@nochar(LOG)==3,{No},{LOG2:=LOG|{\}},{Yes},{LOG2:=LOG});
  371.     case(LOG<>{}&&@setcdir2(LOG)={No},{Yes},{mkdir2(LOG)});
  372.     case(UP={},{Yes},{UP:=TEMP});
  373.     case(@nochar(UP)==3,{No},{UP2:=UP|{\}},{Yes},{UP2:=UP});
  374.     case(UP<>{}&&@setcdir2(UP)={No},{Yes},{mkdir2(UP)});
  375.     case(@nochar(SOUND)==3,
  376.         {No},{SOUND2:=SOUND|{\}},{Yes},{SOUND2:=SOUND});
  377.     case(REDIAL={},{Yes},{REDIAL:={9999}});
  378.     };
  379.  
  380. /*    指定されたファイルマネージャを起動する    */
  381. %FILEMGR{
  382.     case(FMGR,{},{setcdir(CDIR);#FAPXFILE.PLP},
  383.         ,{setcdir(@body(FMGR,,{\}));%fmgr @read(FMGR);fmgr});
  384.     };
  385.  
  386. /************************************************************************/
  387. /*                      以下メインモジュール                            */
  388. /************************************************************************/
  389. /*    カレントディレクトリセット*/
  390. %CDIR    @getcdir;
  391. %CDIR2    @case    (@nochar(CDIR)==3,{Yes},{im(CDIR)},{No},{im(CDIR|{\})});
  392.  
  393. #FAPXINIT.PLP;
  394.  
  395. loop    ({
  396.     SNDMSG    ({erande_f.snd});
  397.     footnote({処理を選択してください});
  398.     setcdir(CDIR);
  399.     select    ({処理を選択してください   << FAPX}|VerLev|{ >>},
  400.         Wtime4*10,{im({Yes})},
  401.         {      NIFTYと通信を行う      },
  402.         {napend;AM3:={No};#FAPXONLN.PLP;im({Yes})},
  403.         {         各種の設定を行う         },
  404.         {napend;#FAPXSET.PLP;init;im({Yes})},
  405.         {     NIFTYでの処理の設定     },
  406.         {napend;#FAPXNIF.PLP;im({Yes})},
  407.         {      設定ファイルの読み込み      },
  408.         {napend;#FAPXSCHG.PLP;im({Yes})},
  409.         {          受信ログを読む          },
  410.         {napend;#FAPXVIEW.PLP;im({Yes})},
  411.         {        ファイル操作を行う        },
  412.         {napend;FILEMGR;im({Yes})},
  413.         {  他のオートパイロットを実行する  },
  414.         {napend;#FAPXPLTX.PLP;im({Yes})},
  415.         {   FAPX v}|VerLev|{の説明   },
  416.         {napend;#FAPXHELP.PLP;im({Yes})},
  417.         {        FAPXを終了する        },
  418.         {napend;im({No})}
  419.         );
  420.     });
  421.  
  422. display({\nオートパイロットFAPX}|VerLev|{を終了しました\n});
  423. footnote({});